package com.ruoyi.electronicFence.mapper;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.electricity.domain.vo.AlarmsHandleCountForEachHourOfTheDay;
import com.ruoyi.electronicFence.domain.TEfAlarm;
import com.ruoyi.rsikManage.domain.vo.AlarmOfEachDayVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 电子围栏报警信息Mapper接口
 *
 * @author sxygsj
 * @date 2024-05-20
 */
@Mapper
@DataSource(value = DataSourceType.SLAVE)
public interface TEfAlarmMapper
{
    /**
     * 查询电子围栏报警信息
     *
     * @param id 电子围栏报警信息主键
     * @return 电子围栏报警信息
     */
    public TEfAlarm selectTEfAlarmById(Long id);

    /**
     * 查询电子围栏报警信息
     *
     * @param id 电子围栏报警信息主键
     * @return 电子围栏报警信息
     */
    public TEfAlarm selectTEfAlarmLast(String MonitorDeviceId);

    /**
     * 查询电子围栏报警信息列表
     *
     * @param tEfAlarm 电子围栏报警信息
     * @return 电子围栏报警信息集合
     */
    public List<TEfAlarm> selectTEfAlarmList(TEfAlarm tEfAlarm);


    /**
     * 查询电子围栏报警信息列表
     *
     * @param tEfAlarm 电子围栏报警信息
     * @return 电子围栏报警信息集合
     */
    public List<TEfAlarm> selectTEfAlarmList2(TEfAlarm tEfAlarm);

    /**
     * 查询电子围栏报警信息列表
     *
     * @param tEfAlarm 电子围栏报警信息
     * @return 电子围栏报警信息集合
     */
    public List<TEfAlarm> selectDetailsList(TEfAlarm tEfAlarm);

    public List<TEfAlarm> selectDetailsListType0(TEfAlarm tEfAlarm);

    public List<TEfAlarm> selectDetailsListType1(TEfAlarm tEfAlarm);

    /**
     * 新增电子围栏报警信息
     *
     * @param tEfAlarm 电子围栏报警信息
     * @return 结果
     */
    public int insertTEfAlarm(TEfAlarm tEfAlarm);

    /**
     * 修改电子围栏报警信息
     *
     * @param tEfAlarm 电子围栏报警信息
     * @return 结果
     */
    public int updateTEfAlarm(TEfAlarm tEfAlarm);

    /**
     * 删除电子围栏报警信息
     *
     * @param id 电子围栏报警信息主键
     * @return 结果
     */
    public int deleteTEfAlarmById(Long id);

    /**
     * 批量删除电子围栏报警信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTEfAlarmByIds(Long[] ids);

    List<AlarmsHandleCountForEachHourOfTheDay> countAlarmsForEachHourOfTheDay();

    List<AlarmOfEachDayVo> countAlarmOfEachDay(@Param("startTime") LocalDate startTime, @Param("endTime") LocalDate endTime, @Param("monitorDeviceType") String monitorDeviceType);

    int countAlgoAlarmInDate(@Param("year") Integer year, @Param("month") Integer month, @Param("monitorDeviceType") String monitorDeviceType);

    int selectDetailsListTotal(TEfAlarm tEfAlarm);

    int updateEfAlarmData();


}
